package com.lct.simpleforecast.receiver

import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.net.ConnectivityManager

/**
 * Author：SkySmile
 * Date：2018/7/11
 * Description：监听网络状态的广播，在BaseActivity的onResume方法中动态注册，onPause方法中注销
 *
 * 这里给一个默认的空构成函数，不然在AndroidManifest.xml文件中会有关于该广播的错误提示
 */
class NetworkBroadcastReceiver() : BroadcastReceiver() {
    private lateinit var networkChange: NetworkChange

    constructor(networkChange: NetworkChange) : this() {
        this.networkChange = networkChange
    }

    /**
     * 每次动态注册时都会首先调用一次该方法，之后每次网络状态发生变化也调用改方法
     * 所以在Activity的onResume方法中注册，不论是下拉通知栏设置设置网络（此时Activity生命周期不变）
     * 还时去设置界面设置网络（此时Activity执行了onPause方法，取消了广播的注册，
     * 但是返回Activity的时候，执行onResume方法重新注册）都会回调到onReceive方法
     */
    override fun onReceive(context: Context, intent: Intent) {
        if (intent.action == ConnectivityManager.CONNECTIVITY_ACTION) {
            networkChange.onNetworkChange()
        }
    }

    interface NetworkChange {
        /**
         * 网络发生变化
         */
        fun onNetworkChange()
    }
}